<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="../../js/vue.js"></script>
</head>

<body>
  <div id="app">

    <div>{{person}}</div>
    <button @click="addObjKeyValue">新增属性</button>
    <button @click="delObjKeyValue">删除属性</button>


  </div>
</body>
<script>

  Vue.config.productionTip = false; // 解决警告信息的

  const vm = new Vue({
    el: "#app",
    data() {
      return {

        person: {

          name: "孙悟空",
          age: 18,

        }
      };
    },

    methods: {

      addObjKeyValue() {

        this.$set(this.person, "sex", "男")
        Vue.set(this.person, "homeland", "东胜瀛洲");
        console.log(this.$set === Vue.set); // true 同一个东西

      
      },

      delObjKeyValue() {

        this.$delete(this.person, "age");
        Vue.delete(this.person, "sex");

      

      }

    },

  });

 /*

  函数名：set() 
  参数： 参数1：  需要添加属性的对象
        参数2：  需要添加给对象的属性名
        参数3：  需要添加给对象的属性值

  调用形式：this.$set() 或 Vue.set()
  挂载点：有$的挂在实例上，没有的在构造函数Vue上
  作用：给需要添加属性的对象添加对应的属性与属性值，同时让它具有响应式（ 即调用updateDOM() ）
  注意：this.$set 与 Vue.set是同一个方法，下面的一致


  函数名：delete()
  参数： 参数1：  需要删除属性的对象
        参数2：  需要删除的属性名

  调用形式：this.$delete() 或 Vue.delete()
  挂载点：有$的挂在实例上，没有的在构造函数Vue上
  作用：给需要删除属性的对象删除对应的属性与属性值，同时让它具有响应式




 */ 


</script>


</html>